SI توسط مجموعه (2)
مثال تزریق setter توسط مجموعه غیر رشته ای (دارای شی وابسته)
در صورت وجود شی وابسته در مجموعه، می توان با استفاده از عنصر ref درون list ، set و map به تزریق اطلاعات پرداخت. در اینجا از عنصر list ، set یا map درون عنصر property استفاده می شود.
این مثال برگرفته از فرومی است که" یک سوال می تواند چندین پاسخ داشته باشد" اما پاسخ¬ها اطلاعات منحصر به خود را دارند از جمله answerId، answer و postedBy . چهار فایل زیر برای این مثال نوشته شده است:
1. Question.java
2. Answer.java
3. applicationContext.xml
4. Test.java
در این مثال ما از list استفاده می کنیم که قابلیت داشتن عناصر تکراری را دارد. شما می¬توانید از set که تنها شامل عناصر یکتا است استفاده کنید. در صورت استفاده از set، در فایل applicationContext.xml ، list را به set و در فایل Question.java ،List را به Set تغییر دهید.
Question.java:
این کلاس شامل سه خصیصه، دو سازنده و متد displayInfo() برای چاپ اطلاعات است. در اینجا از list برای ذخیره پاسخ ها استفاده می کنیم.
package com.javatpoint;
import java.util.Iterator;
import java.util.List;
public class Question {
private int id;
private String name;
private List< Answer> answers;
//setters and getters
public void displayInfo(){
System.out.println(id+" "+name);
System.out.println("answers are:");
Iterator< Answer> itr=answers.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
Answer.java:
این کلاس دارای سه خصیصه شناسه، نام وby به همراه سازنده و متد toString()است.
package com.javatpoint;
public class Answer {
private int id;
private String name;
private String by;
//setters and getters
public String toString(){
return id+" "+name+" "+by;
}
}
applicationContext.xml:
عنصر ref برای تعریف مرجع bean دیگر مورد استفاده قرار می گیرد. در اینجا برای تعیین مرجع bean دیگر از خصیصه bean عنصر ref استفاده می شود.
< ?xml version="1.0" encoding="UTF-8" ?>
< beans 3. xmlns="http://www.springframework.org/schema/beans"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xmlns:p="http://www.springframework.org/schema/p"
6. xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
< bean id="answer1" class="com.javatpoint.Answer">
< property name="id" value="1">< /property>
< property name="name" value="Java is a programming language">< /property>
< property name="by" value="Ravi Malik">< /property>
< /bean>
< bean id="answer2" class="com.javatpoint.Answer">
< property name="id" value="2">< /property>
< property name="name" value="Java is a platform">< /property>
< property name="by" value="Sachin">< /property>
< /bean>
< bean id="q" class="com.javatpoint.Question">
< property name="id" value="1">< /property>
< property name="name" value="What is Java?">< /property>
< property name="answers">
< list>
< ref bean="answer1" />
< ref bean="answer2" />
< /list>
< /property>
< /bean>
< /beans>
Test.java:
این کلاس bean را از فایل applicationContext.xml می گیرد و متد displayInfo را فراخوانی می کند.
package com.javatpoint;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
Resource r=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(r);
Question q=(Question)factory.getBean("q");
q.displayInfo();
}
}